package com.sunwayhorizo.health.platform.security.dao;

import java.util.List;

import com.sunwayhorizo.health.platform.security.persistent.SecurityPermission;
import com.sunwayhorizo.health.platform.security.persistent.SecurityPermissionRole;


public interface SecurityPermissionDao {
	
	/**
	 * 通过资源Id批量删除权限关系
	 * @param resourceId 实体Id
	 */
	void deleteSecurityPermissionByResourceId(String resourceId);
	
	/**
     * 通过资源Id批量删除权限关系
     * @param resourceId 实体Id
     */
    void deleteSecurityPermissionByResourceIds(List<String> resourceIds);
	
	/**
	 * 通过角色Id查询权限列表
	 * @param roleId 实体Id
	 * return 返回查询的权限实体列表
	 */
	List<SecurityPermissionRole> findSecurityPermissionListByRoleId(String roleId);
	
	/**
	 * 通过账号Id查询账号对应角色关联的权限列表
	 * @param accountId 实体Id
	 * return 返回查询的权限实体列表
	 */
	List<SecurityPermission> findSecurityPermissionListByAccountIdJoinRole(String accountId);
	
	/**
	 * 通过账号Id查询账号对应屏蔽后的角色关联的权限列表
	 * @param accountId 实体Id
	 * return 返回查询的权限实体列表
	 */
	List<SecurityPermission> findSecurityPermissionListByAccountIdJoinRoleWithScreen(String accountId);
	
	/**
	 * 通过账号Id查询账号关联的权限列表
	 * @param accountId 实体Id
	 * return 返回查询的权限实体列表
	 */
	List<SecurityPermission> findSecurityPermissionListByAccountId(String accountId);
	
	/**
	 * 通过账号Id查询屏蔽后的账号关联的权限列表
	 * @param accountId 实体Id
	 * return 返回查询的权限实体列表
	 */
	List<SecurityPermission> findSecurityPermissionListByAccountIdWithScreen(String accountId);
		
	/**
	 * 通过资源Id查询权限列表
	 * @param resourceId 实体ID
	 * @return 返回查询的权限实体列表
	 */
	List<SecurityPermission> findSecurityPermissionListByResourceId(String resourceId);
	
	/**
	 * 通过操作Id查询权限列表的长度
	 * @param operationId 实体ID
	 * @return 返回查询的权限实体列表的长度
	 */
	Long findSecurityPermissionListSizeByOperationId(String operationId);
}